package boardgame;

import java.util.Vector;
import util.BGConstants;

public abstract class GameState{

	private Piece[][][] board = null;
	private int currentPlayer = 0;
	private int gameState = BGConstants.NEWGAME;
	private boolean aiStatus = false;
		
	public void setBoard(Piece[][][] board) {
		this.board = board;
	}
	public Piece[][][] getBoard() {
		return board;
	}
	
	public void setCurrentPlayer(int currentPlayer) {
		this.currentPlayer = currentPlayer;
	}
	public int getCurrentPlayer() {
		return currentPlayer;
	}
	
	public void setGameState(int gameState) {
		this.gameState = gameState;
	}
	public int getGameState() {
		return gameState;
	}
	
	public void setAiStatus(boolean aiStatus) {
		this.aiStatus = aiStatus;
	}
	public boolean isAiStatus() {
		return aiStatus;
	}
	
	//Methods for AI
	public abstract int evaluate();
	public abstract GameState applyMove(Move move);
	public abstract GameState simulateMove(Move move);
	public abstract Vector<Move> generateMoves();
}